λͺ¨λ μ¬μ©μλ₯Ό μν ν¬μ©μ±μ 보μ₯νκΈ° μν΄ μ€ν¬λ¦° 리λ νΈνμ±μ μ΄μ μ λ§μΆ μΉ μ κ·Όμ± μ’ ν© κ°μ΄λμ λλ€.
μΉ μ κ·Όμ±: μ€ν¬λ¦° 리λ μ¬μ©μλ₯Ό μν μΉμ¬μ΄νΈ μ΅μ ν
μ€λλ μ λμ§νΈ μλμ μΉ μ κ·Όμ±μ λ¨μν μμΌλ©΄ μ’μ κ²μ΄ μλλΌ κΈ°λ³Έμ μΈ μꡬ μ¬νμ λλ€. μ κ·Όμ±μ΄ λ°μ΄λ μΉμ¬μ΄νΈλ μ€ν¬λ¦° 리λμ μμ‘΄νλ μ¬λλ€μ ν¬ν¨ν μ₯μ κ° μλ μ¬λλ€μ΄ μΉμ μΈμνκ³ , μ΄ν΄νκ³ , νμνκ³ , μνΈμμ©ν μ μλλ‘ λ³΄μ₯ν©λλ€.
μ΄ μ’ ν© κ°μ΄λμμλ μ€ν¬λ¦° 리λ μ¬μ©μλ₯Ό μν μΉμ¬μ΄νΈ μ΅μ νμ μΈλΆ μ¬νμ λ€λ£¨λ©°, νμ κΈ°μ , λͺ¨λ² μ¬λ‘ λ° μ€μ μμ λ₯Ό μ΄ν΄λ΄ λλ€.
μ€ν¬λ¦° 리λλ 무μμΈκ°?
μ€ν¬λ¦° 리λλ μ»΄ν¨ν° νλ©΄μ ν μ€νΈ λ° κΈ°ν μμλ₯Ό μμ±μ΄λ μ μ μΆλ ₯μΌλ‘ λ³ννλ 보쑰 κΈ°μ μ λλ€. μκ° μ₯μ κ° μλ κ°μΈμ΄ λμ§νΈ μ½ν μΈ μ μ κ·Όνκ³ μνΈμμ©ν μ μκ² ν΄μ€λλ€. λ§μ΄ μ¬μ©λλ μ€ν¬λ¦° 리λλ λ€μκ³Ό κ°μ΅λλ€:
- JAWS (Job Access With Speech): Windowsμμ λ리 μ¬μ©λλ μ€ν¬λ¦° 리λμ λλ€.
- NVDA (NonVisual Desktop Access): Windowsμ© λ¬΄λ£ μ€ν μμ€ μ€ν¬λ¦° 리λμ λλ€.
- VoiceOver: macOS λ° iOSμ©μΌλ‘ λ΄μ₯λ Appleμ μ€ν¬λ¦° 리λμ λλ€.
- ChromeVox: Google Chrome λ° Chrome OSμ© μ€ν¬λ¦° 리λ νμ₯ νλ‘κ·Έλ¨μ λλ€.
- Orca: Linuxμ© λ¬΄λ£ μ€ν μμ€ μ€ν¬λ¦° 리λμ λλ€.
μ€ν¬λ¦° 리λλ μΉμ¬μ΄νΈμ κΈ°λ³Έ μ½λλ₯Ό ν΄μνκ³ μ½ν μΈ λ° κ΅¬μ‘°μ λν μ 보λ₯Ό μ¬μ©μμκ² μ 곡ν¨μΌλ‘μ¨ μλν©λλ€. μ€ν¬λ¦° 리λκ° μ½κ² μ΄ν΄νκ³ νμν μ μλ λ°©μμΌλ‘ μΉμ¬μ΄νΈλ₯Ό ꡬμ±νλ κ²μ΄ μ€μν©λλ€.
μ€ν¬λ¦° 리λ μ΅μ νκ° μ€μν μ΄μ λ 무μμΈκ°?
μ€ν¬λ¦° 리λλ₯Ό μν΄ μΉμ¬μ΄νΈλ₯Ό μ΅μ ννλ©΄ λ€μκ³Ό κ°μ μ¬λ¬ μ΄μ μ΄ μμ΅λλ€:
- ν¬μ©μ±: μκ° μ₯μ κ° μλ μ¬μ©μκ° μΉμ¬μ΄νΈμ ν¨κ³Όμ μΌλ‘ μ κ·Όνκ³ μ¬μ©ν μ μλλ‘ λ³΄μ₯ν©λλ€.
- λ²λ₯ μ€μ: λ§μ κ΅κ°μλ μΉ μ κ·Όμ±μ μꡬνλ λ²λ₯ κ³Ό κ·μ μ΄ μμ΅λλ€ (μ: λ―Έκ΅μ μ₯μ μΈλ²(ADA), μΊλλ€μ μ¨ν리μ€μ£Ό μ₯μ μΈ μ κ·Όμ±λ²(AODA), μ λ½μ EN 301 549).
- μ¬μ©μ κ²½ν κ°μ : μ κ·Όμ± λμ λμμΈμ μ₯μ μ¬λΆμ κ΄κ³μμ΄ λͺ¨λ μ¬μ©μμκ² λ λμ μ¬μ©μ κ²½νμΌλ‘ μ΄μ΄μ§λ κ²½μ°κ° λ§μ΅λλ€.
- λ λμ μ μ¬ κ³ κ° ν보: μΉμ¬μ΄νΈμ μ κ·Όμ±μ λμ΄λ©΄ λ λμ μ μ¬ κ³ κ°μκ² λ€κ°κ° μ μμ΅λλ€.
- SEO νν: κ²μ μμ§μ μ κ·Όμ±μ΄ λμ μΉμ¬μ΄νΈλ₯Ό μ νΈνλ―λ‘ κ²μ μμ§ μμλ₯Ό ν₯μμν¬ μ μμ΅λλ€.
μ€ν¬λ¦° 리λ μ΅μ νμ ν΅μ¬ μμΉ
λ€μ μμΉλ€μ μ€ν¬λ¦° 리λ μΉνμ μΈ μΉμ¬μ΄νΈλ₯Ό λ§λλ λ° νμμ μ λλ€:
1. μλ§¨ν± HTML
μλ§¨ν± HTML μμλ₯Ό μ¬λ°λ₯΄κ² μ¬μ©νλ κ²μ μ½ν μΈ μ ꡬ쑰μ μλ―Έλ₯Ό λΆμ¬νλ λ° λ§€μ° μ€μν©λλ€. μλ§¨ν± μμλ μΉμ¬μ΄νΈμ μ¬λ¬ λΆλΆμ λͺ©μ μ μ€ν¬λ¦° 리λμ μ λ¬νμ¬ μ¬μ©μκ° λ ν¨μ¨μ μΌλ‘ νμν μ μλλ‘ ν©λλ€.
μμ:
- μ¬μ΄νΈ ν€λμλ
<header>λ₯Ό μ¬μ©ν©λλ€. - λ΄λΉκ²μ΄μ
λ©λ΄μλ
<nav>λ₯Ό μ¬μ©ν©λλ€. - μ£Όμ μ½ν
μΈ μμμλ
<main>μ μ¬μ©ν©λλ€. - λ
립μ μΈ μ½ν
μΈ λΈλ‘μ μΊ‘μννλ λ°λ
<article>μ μ¬μ©ν©λλ€. - 보좩 μ½ν
μΈ μλ
<aside>μ μ¬μ©ν©λλ€. - μ¬μ΄νΈ νΈν°μλ
<footer>λ₯Ό μ¬μ©ν©λλ€. - μ λͺ©μλ
<h1>λΆν°<h6>κΉμ§ μ¬μ©ν©λλ€. - λ¨λ½μλ
<p>λ₯Ό μ¬μ©ν©λλ€. - λͺ©λ‘μλ
<ul>λ°<ol>μ μ¬μ©ν©λλ€.
μμ μ½λ:
<header>
<h1>λ΄ μΉμ¬μ΄νΈ</h1>
<nav>
<ul>
<li><a href="#">ν</a></li>
<li><a href="#">μκ°</a></li>
<li><a href="#">μλΉμ€</a></li>
<li><a href="#">λ¬Έμ</a></li>
</ul>
</nav>
</header>
<main>
<article>
<h2>κΈ°μ¬ μ λͺ©</h2>
<p>μ΄κ²μ κΈ°μ¬μ μ£Όμ λ΄μ©μ
λλ€.</p>
</article>
</main>
<footer>
<p>Copyright 2023</p>
</footer>
2. μ΄λ―Έμ§ λ체 ν μ€νΈ
μ΄λ―Έμ§μλ νμ μ΄λ―Έμ§μ λ΄μ©κ³Ό λͺ©μ μ μ€ν¬λ¦° 리λ μ¬μ©μμκ² μ λ¬νλ μ€λͺ μ μΈ λ체 ν μ€νΈ(alt text)κ° μμ΄μΌ ν©λλ€. λ체 ν μ€νΈλ κ°κ²°νκ³ μ μ΅ν΄μΌ ν©λλ€.
λͺ¨λ² μ¬λ‘:
- μ₯μμ© μ΄λ―Έμ§λ₯Ό ν¬ν¨ν λͺ¨λ μ΄λ―Έμ§μ λ체 ν μ€νΈλ₯Ό μ 곡νμΈμ.
- λ체 ν μ€νΈλ κ°κ²°νκ³ μ€λͺ μ μΌλ‘ μμ±νμΈμ.
- "~μ μ΄λ―Έμ§" λλ "~μ μ¬μ§"κ³Ό κ°μ 문ꡬ μ¬μ©μ νΌνμΈμ.
- 볡μ‘ν μ΄λ―Έμ§μ κ²½μ° κΈ΄ μ€λͺ
(
longdescμμ± λλ λ³λμ μ€λͺ ν μ€νΈ) μ¬μ©μ κ³ λ €νμΈμ. - μ΄λ―Έμ§κ° μμ ν μ₯μμ©μ΄κ³ μλ―Έλ₯Ό λνμ§ μλ κ²½μ°, λΉ alt μμ±(
alt="")μ μ¬μ©νμ¬ μ€ν¬λ¦° 리λκ° μ½μ§ μλλ‘ νμΈμ.
μμ μ½λ:
<img src="logo.png" alt="νμ¬ λ‘κ³ ">
<img src="decorative.png" alt="">
3. ARIA μμ±
ARIA(Accessible Rich Internet Applications) μμ±μ μ€ν¬λ¦° 리λμκ² μμμ μν , μν λ° μμ±μ λν μΆκ° μ 보λ₯Ό μ 곡νλ©°, νΉν λμ μ½ν μΈ λ° λ³΅μ‘ν μμ ―μ μ μ©ν©λλ€. ARIA μμ±μ μλ§¨ν± HTMLλ§μΌλ‘λ μΆ©λΆνμ§ μμ λ μ κ·Όμ±μ ν₯μμν¬ μ μμ΅λλ€.
μΌλ°μ μΈ ARIA μμ±:
- role: μμμ μν μ μ μν©λλ€ (μ:
role="button",role="navigation"). - aria-label: μκ°μ λ μ΄λΈμ΄ μκ±°λ μΆ©λΆνμ§ μμ λ μμμ λν ν μ€νΈ λ μ΄λΈμ μ 곡ν©λλ€.
- aria-labelledby: μμλ₯Ό λ μ΄λΈ μν μ νλ λ€λ₯Έ μμμ μ°κ²°ν©λλ€.
- aria-describedby: μμλ₯Ό μ€λͺ μ μ 곡νλ λ€λ₯Έ μμμ μ°κ²°ν©λλ€.
- aria-hidden: μ€ν¬λ¦° 리λμμ μμλ₯Ό μ¨κΉλλ€.
- aria-live: μμμ μ½ν
μΈ κ° λμ μΌλ‘ μ
λ°μ΄νΈλ¨μ λνλ
λλ€ (μ:
aria-live="polite",aria-live="assertive"). - aria-expanded: μ μ μ μλ μμκ° νμ¬ νμ₯λμλμ§ λλ μΆμλμλμ§λ₯Ό λνλ λλ€.
- aria-haspopup: μμμ νμ λ©λ΄κ° μμμ λνλ λλ€.
μμ μ½λ:
<button role="button" aria-label="λν μμ λ«κΈ°" onclick="closeDialog()">X</button>
<div id="description">μ΄κ²μ μ΄λ―Έμ§μ λν μ€λͺ
μ
λλ€.</div>
<img src="example.jpg" aria-describedby="description" alt="μμ μ΄λ―Έμ§">
μ€μ μ°Έκ³ : ARIA μμ±μ μ μ€νκ² μ¬μ©ν΄μΌ ν©λλ€. ARIAλ₯Ό κ³Όλνκ² μ¬μ©νλ©΄ μ κ·Όμ± λ¬Έμ λ₯Ό μΌμΌν¬ μ μμ΅λλ€. νμ μλ§¨ν± HTML μμλ₯Ό λ¨Όμ μ¬μ©νκ³ , κΈ°λ³Έ μ맨ν±μ 보μνκ±°λ μ¬μ μν΄μΌ ν λλ§ ARIAλ₯Ό μ¬μ©νμΈμ.
4. ν€λ³΄λ λ΄λΉκ²μ΄μ
μΉμ¬μ΄νΈμ λͺ¨λ μνΈμμ© κ°λ₯ν μμκ° ν€λ³΄λλ§μΌλ‘ νμ κ°λ₯νλλ‘ ν΄μΌ ν©λλ€. μ΄λ λ§μ°μ€λ λ€λ₯Έ ν¬μΈν μ₯μΉλ₯Ό μ¬μ©ν μ μλ μ¬μ©μμκ² λ§€μ° μ€μν©λλ€. ν€λ³΄λ λ΄λΉκ²μ΄μ μ ν¬μ»€μ€ νμκΈ°μ λ Όλ¦¬μ μΈ ν μμμ μ μ ν μ¬μ©μ ν¬κ² μμ‘΄ν©λλ€.
λͺ¨λ² μ¬λ‘:
- ν¬μ»€μ€ νμκΈ°: λͺ¨λ μνΈμμ© κ°λ₯ν μμ(μ: λ§ν¬, λ²νΌ, νΌ νλ)κ° μ νλμμ λ λͺ
ννκ³ κ°μμ μΈ ν¬μ»€μ€ νμκΈ°λ₯Ό κ°λλ‘ νμΈμ. CSSλ₯Ό μ¬μ©νμ¬
:focusμνμ μ€νμΌμ μ§μ νμΈμ. - ν μμ: ν μμλ νμ΄μ§μ λ
Όλ¦¬μ μΈ μ½κΈ° μμ(μΌλ°μ μΌλ‘ μΌμͺ½μμ μ€λ₯Έμͺ½, μμμ μλλ‘)λ₯Ό λ°λΌμΌ ν©λλ€. νμν κ²½μ°
tabindexμμ±μ μ¬μ©νμ¬ ν μμλ₯Ό μ‘°μ νμΈμ.tabindex="0"λ°tabindex="-1"μ μλͺ» μ¬μ©νλ©΄ μ κ·Όμ± λ¬Έμ λ₯Ό μΌμΌν¬ μ μμΌλ―λ‘ μ λμ μΌλ‘ νμν κ²½μ°κ° μλλ©΄ μ¬μ©μ νΌνμΈμ. - λ΄λΉκ²μ΄μ 건λλ°κΈ° λ§ν¬: νμ΄μ§ μλ¨μ μ¬μ©μκ° μ£Ό λ΄λΉκ²μ΄μ λ©λ΄λ₯Ό μ°ννκ³ λ°λ‘ μ£Ό μ½ν μΈ λ‘ μ΄λν μ μλ "λ΄λΉκ²μ΄μ 건λλ°κΈ°" λ§ν¬λ₯Ό μ 곡νμΈμ. μ΄λ μ€ν¬λ¦° 리λ μ¬μ©μμκ² νΉν μ μ©νλ°, λͺ¨λ νμ΄μ§μμ λ°λ³΅μ μΈ λ΄λΉκ²μ΄μ λ§ν¬λ₯Ό νμν νμλ₯Ό μ€μ¬μ£ΌκΈ° λλ¬Έμ λλ€.
- λͺ¨λ¬ λν μμ: λͺ¨λ¬ λν μμκ° μ΄λ¦¬λ©΄, λ«ν λκΉμ§ ν¬μ»€μ€κ° λν μμ λ΄μ κ°νλλ‘ νμΈμ. μ¬μ©μκ° λν μμ λ°μΌλ‘ ννλ κ²μ λ°©μ§νμΈμ.
μμ μ½λ (λ΄λΉκ²μ΄μ 건λλ°κΈ° λ§ν¬):
<a href="#main-content" class="skip-link">μ£Όμ μ½ν
μΈ λ‘ κ±΄λλ°κΈ°</a>
<header>
<nav>
<!-- λ΄λΉκ²μ΄μ
λ©λ΄ -->
</nav>
</header>
<main id="main-content">
<!-- μ£Όμ μ½ν
μΈ -->
</main>
μμ μ½λ (ν¬μ»€μ€ νμκΈ°μ© CSS):
a:focus, button:focus, input:focus, textarea:focus, select:focus {
outline: 2px solid blue;
outline-offset: 2px;
}
5. νΌ μ κ·Όμ±
νΌμ λ§μ μΉμ¬μ΄νΈμ μ€μν λΆλΆμ΄λ©°, μ€ν¬λ¦° 리λ μ¬μ©μκ° μ κ·Όν μ μλλ‘ λ³΄μ₯νλ κ²μ΄ νμμ μ λλ€. μ μ ν λ μ΄λΈλ§, λͺ νν μ§μΉ¨ λ° μ€λ₯ μ²λ¦¬λ νΌ μ κ·Όμ±μ λ§€μ° μ€μν©λλ€.
λͺ¨λ² μ¬λ‘:
- λ μ΄λΈλ§:
<label>μμλ₯Ό μ¬μ©νμ¬ λ μ΄λΈμ νΌ νλμ μ°κ²°νμΈμ.<label>μμμforμμ±μ ν΄λΉ νΌ νλμidμμ±κ³Ό μΌμΉν΄μΌ ν©λλ€. - μ§μΉ¨: νΌ μμ±μ λν λͺ
ννκ³ κ°κ²°ν μ§μΉ¨μ μ 곡νμΈμ.
aria-describedbyμμ±μ μ¬μ©νμ¬ μ§μΉ¨μ νΌ νλμ μ°κ²°νμΈμ. - μ€λ₯ μ²λ¦¬: μ€λ₯ λ©μμ§λ₯Ό λͺ
ννκ³ λμ λκ² νμνμΈμ.
aria-liveμμ±μ μ¬μ©νμ¬ μ€ν¬λ¦° 리λ μ¬μ©μμκ² μ€λ₯ λ©μμ§λ₯Ό μ리μΈμ.aria-describedbyμμ±μ μ¬μ©νμ¬ μ€λ₯ λ©μμ§λ₯Ό ν΄λΉ νΌ νλμ μ°κ²°νμΈμ. - νμ νλ: νμ νλλ₯Ό μκ°μ μΌλ‘λ νλ‘κ·Έλλ° λ°©μμΌλ‘ λͺ
ννκ² νμνμΈμ.
requiredμμ±μ μ¬μ©νμ¬ νμ νλλ₯Ό νμνμΈμ.aria-requiredμμ±μ μ¬μ©νμ¬ μ€ν¬λ¦° 리λ μ¬μ©μμκ² νλκ° νμμμ λνλ΄μΈμ. - κ΄λ ¨ νλ κ·Έλ£Ήν:
<fieldset>λ°<legend>μμλ₯Ό μ¬μ©νμ¬ κ΄λ ¨ νΌ νλλ₯Ό κ·Έλ£ΉννμΈμ.
μμ μ½λ:
<label for="name">μ΄λ¦:</label>
<input type="text" id="name" name="name" required aria-required="true">
<div id="name-instructions">μ 체 μ΄λ¦μ μ
λ ₯ν΄μ£ΌμΈμ.</div>
<label for="name">μ΄λ¦:</label>
<input type="text" id="name" name="name" aria-describedby="name-instructions">
<form>
<fieldset>
<legend>μ°λ½μ² μ 보</legend>
<label for="email">μ΄λ©μΌ:</label>
<input type="email" id="email" name="email" required aria-required="true"><br><br>
<label for="phone">μ νλ²νΈ:</label>
<input type="tel" id="phone" name="phone">
</fieldset>
</form>
6. λμ μ½ν μΈ μ κ·Όμ±
μΉμ¬μ΄νΈμ μ½ν μΈ κ° λμ μΌλ‘(μ: AJAX λλ JavaScriptλ₯Ό ν΅ν΄) λ³κ²½λ λ, μ€ν¬λ¦° 리λ μ¬μ©μμκ² λ³κ²½ μ¬νμ μ리λ κ²μ΄ μ€μν©λλ€. ARIA λΌμ΄λΈ 리μ (live region)μ μ¬μ©νμ¬ λμ μ½ν μΈ μ μ λ°μ΄νΈλ₯Ό μ리μΈμ.
ARIA λΌμ΄λΈ 리μ :
- aria-live="off": κΈ°λ³Έκ°μ λλ€. 리μ μ μ λ°μ΄νΈκ° μλ €μ§μ§ μμ΅λλ€.
- aria-live="polite": μ¬μ©μκ° μ ν΄ μνμΌ λ μ λ°μ΄νΈλ₯Ό μ립λλ€. κ°μ₯ μΌλ°μ μ΄κ³ κΆμ₯λλ κ°μ λλ€.
- aria-live="assertive": μ¬μ©μ μμ μ μ€λ¨νκ³ μ¦μ μ λ°μ΄νΈλ₯Ό μ립λλ€. λ°©ν΄κ° λ μ μμΌλ―λ‘ μ΄ κ°μ λλ¬Όκ² μ¬μ©νμΈμ.
μμ μ½λ:
<div aria-live="polite" id="status-message"></div>
<script>
// μ½ν
μΈ κ° μ
λ°μ΄νΈλλ©΄ μν λ©μμ§λ₯Ό μ
λ°μ΄νΈν©λλ€
document.getElementById('status-message').textContent = "μ½ν
μΈ κ° μ±κ³΅μ μΌλ‘ μ
λ°μ΄νΈλμμ΅λλ€!";
</script>
7. μμ λλΉ
ν μ€νΈμ λ°°κ²½μ κ°μ μΆ©λΆν μμ λλΉκ° μλμ§ νμΈνμΈμ. μ΄λ μ μλ ₯ λλ μλ§Ήμ΄ μλ μ¬μ©μμκ² μ€μν©λλ€. μΉ μ½ν μΈ μ κ·Όμ± κ°μ΄λλΌμΈ(WCAG)μ μΌλ° ν μ€νΈμ κ²½μ° μ΅μ 4.5:1, ν° ν μ€νΈμ κ²½μ° 3:1μ λͺ μλΉλ₯Ό μꡬν©λλ€.
μμ λλΉ νμΈ λꡬ:
- WebAIM μμ λλΉ κ²μ¬κΈ° (webaim.org/resources/contrastchecker/)
- Coolors (coolors.co)
- Adobe Color (color.adobe.com)
8. λ―Έλμ΄ μ κ·Όμ±
μΉμ¬μ΄νΈμ μ€λμ€ λλ λΉλμ€ μ½ν μΈ κ° ν¬ν¨λ κ²½μ°, ν΄λΉ μ½ν μΈ λ₯Ό 보거λ λ€μ μ μλ μ¬μ©μλ₯Ό μν λμμ μ 곡ν΄μΌ ν©λλ€. μ¬κΈ°μλ λ€μμ΄ ν¬ν¨λ©λλ€:
- μΊ‘μ : λͺ¨λ λΉλμ€ μ½ν μΈ μ μΊ‘μ μ μ 곡νμΈμ. μΊ‘μ μ μ€λμ€ νΈλμ λκΈ°νλ ν μ€νΈ μ€ν¬λ¦½νΈμ λλ€.
- μ€ν¬λ¦½νΈ: λͺ¨λ μ€λμ€ λ° λΉλμ€ μ½ν μΈ μ ν μ€νΈ μ€ν¬λ¦½νΈλ₯Ό μ 곡νμΈμ. μ€ν¬λ¦½νΈμλ λͺ¨λ μμ± μ½ν μΈ μ μ€μν μ리 λ° μκ°μ μμμ λν μ€λͺ μ΄ ν¬ν¨λμ΄μΌ ν©λλ€.
- μ€λμ€ μ€λͺ : λΉλμ€ μ½ν μΈ μ μ€λμ€ μ€λͺ μ μ 곡νμΈμ. μ€λμ€ μ€λͺ μ μκ° μ₯μ κ° μλ μ¬μ©μλ₯Ό μν΄ λΉλμ€μ μκ°μ μμλ₯Ό μ€λͺ ν©λλ€.
9. μ€ν¬λ¦° 리λλ‘ ν μ€νΈνκΈ°
μΉμ¬μ΄νΈκ° μ€ν¬λ¦° 리λ μ¬μ©μμκ² μ κ·Ό κ°λ₯νμ§ νμΈνλ κ°μ₯ ν¨κ³Όμ μΈ λ°©λ²μ λ€μν μ€ν¬λ¦° 리λλ‘ ν μ€νΈνλ κ²μ λλ€. μ΄λ₯Ό ν΅ν΄ μ‘΄μ¬ν μ μλ λͺ¨λ μ κ·Όμ± λ¬Έμ λ₯Ό μλ³νκ³ μμ νλ λ° λμμ΄ λ©λλ€.
ν μ€νΈ λꡬ:
- μλ ν μ€νΈ: NVDA(무λ£), JAWS(μ λ£) λλ VoiceOver(macOS λ° iOSμ λ΄μ₯)μ κ°μ μ€ν¬λ¦° 리λλ₯Ό μ¬μ©νμ¬ μΉμ¬μ΄νΈλ₯Ό νμνμΈμ. μΌλ°μ μΈ μμ κ³Ό μνΈμμ©μ μλ£ν΄ 보μΈμ.
- μλνλ ν μ€νΈ: μ κ·Όμ± ν μ€νΈ λꡬλ₯Ό μ¬μ©νμ¬ μ μ¬μ μΈ μ κ·Όμ± λ¬Έμ λ₯Ό μλ³νμΈμ. μ΄λ¬ν λꡬλ μΌλ°μ μΈ μ€λ₯λ₯Ό μ°Ύλ λ° λμμ΄ λ μ μμ§λ§, μλ ν μ€νΈλ₯Ό λ체ν΄μλ μ λ©λλ€. μΈκΈ° μλ μ κ·Όμ± ν μ€νΈ λꡬλ λ€μκ³Ό κ°μ΅λλ€:
- WAVE (Web Accessibility Evaluation Tool)
- axe DevTools
- Lighthouse (Chrome DevTools λ΄)
μ€ν¬λ¦° 리λλ‘ ν μ€νΈνκΈ° μν ν:
- κΈ°λ³Έ μ¬ν λ°°μ°κΈ°: μ¬μ© μ€μΈ μ€ν¬λ¦° 리λμ κΈ°λ³Έ λͺ λ Ήμ΄μ νμ κΈ°μ μ μ΅μν΄μ§μΈμ.
- λ€λ₯Έ μ€ν¬λ¦° 리λ μ¬μ©νκΈ°: κ° μ€ν¬λ¦° 리λκ° μΉ μ½ν μΈ λ₯Ό λ€λ₯΄κ² ν΄μνλ―λ‘ λ€μν μ€ν¬λ¦° 리λλ‘ μΉμ¬μ΄νΈλ₯Ό ν μ€νΈνμΈμ.
- μ₯μ κ° μλ μ¬μ©μ μ°Έμ¬μν€κΈ°: μΉμ¬μ΄νΈμ μ κ·Όμ±μ 보μ₯νλ κ°μ₯ μ’μ λ°©λ²μ ν μ€νΈ κ³Όμ μ μ₯μ κ° μλ μ¬μ©μλ₯Ό μ°Έμ¬μν€λ κ²μ λλ€. μ€ν¬λ¦° 리λ μ¬μ©μλ‘λΆν° μΉμ¬μ΄νΈμ μ¬μ©μ± λ° μ κ·Όμ±μ λν νΌλλ°±μ λ°μΌμΈμ.
WCAG (μΉ μ½ν μΈ μ κ·Όμ± κ°μ΄λλΌμΈ)
μΉ μ½ν μΈ μ κ·Όμ± κ°μ΄λλΌμΈ(WCAG)μ μΉ μ½ν μΈ λ₯Ό λ μ κ·Όμ± μκ² λ§λ€κΈ° μν κ΅μ μ μΌλ‘ μΈμ λ μ§μΉ¨ λͺ¨μμ λλ€. WCAGλ μλ μμ΄λ μΉ μ»¨μμμ(W3C)μ μν΄ κ°λ°λμμΌλ©° μΉ μ κ·Όμ±μ νμ€μΌλ‘ λ리 μ¬μ©λ©λλ€.
WCAGλ POURλ‘ μλ €μ§ λ€ κ°μ§ μμΉμ μ€μ¬μΌλ‘ ꡬμ±λ©λλ€:
- μΈμ κ°λ₯(Perceivable): μ 보μ μ¬μ©μ μΈν°νμ΄μ€ ꡬμ±μμλ μ¬μ©μκ° μΈμν μ μλ λ°©μμΌλ‘ μ μλμ΄μΌ ν©λλ€.
- μ΄μ© κ°λ₯(Operable): μ¬μ©μ μΈν°νμ΄μ€ ꡬμ±μμμ λ΄λΉκ²μ΄μ μ μ΄μ© κ°λ₯ν΄μΌ ν©λλ€.
- μ΄ν΄ κ°λ₯(Understandable): μ 보μ μ¬μ©μ μΈν°νμ΄μ€μ μλμ μ΄ν΄ κ°λ₯ν΄μΌ ν©λλ€.
- κ²¬κ³ (Robust): μ½ν μΈ λ 보쑰 κΈ°μ μ ν¬ν¨ν λ€μν μ¬μ©μ μμ΄μ νΈκ° μμ μ μΌλ‘ ν΄μν μ μλλ‘ μΆ©λΆν κ²¬κ³ ν΄μΌ ν©λλ€.
WCAGλ A, AA, AAAμ μΈ κ°μ§ μ€μ μμ€μΌλ‘ λλ©λλ€. A μμ€μ κ°μ₯ κΈ°λ³Έμ μΈ μ κ·Όμ± μμ€μ΄λ©°, AAA μμ€μ κ°μ₯ λμ μμ€μ λλ€. λλΆλΆμ μ‘°μ§μ AA μμ€μ μ€μνλ κ²μ λͺ©νλ‘ ν©λλ€.
κ²°λ‘
μ€ν¬λ¦° 리λ μ¬μ©μλ₯Ό μν΄ μΉμ¬μ΄νΈλ₯Ό μ΅μ ννλ κ²μ μ§μ μΌλ‘ ν¬μ©μ μ΄κ³ μ κ·Ό κ°λ₯ν μ¨λΌμΈ κ²½νμ λ§λλ λ° νμμ μΈ λ¨κ³μ λλ€. μ΄ κ°μ΄λμ μ€λͺ λ μμΉκ³Ό λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄ μ₯μ μ¬λΆμ κ΄κ³μμ΄ λͺ¨λ μ¬μ©μκ° μΉμ¬μ΄νΈμ μ κ·Όν μ μλλ‘ λ³΄μ₯ν μ μμ΅λλ€.
μΉ μ κ·Όμ±μ μ§μμ μΈ κ³Όμ μμ κΈ°μ΅νμΈμ. μ κΈ°μ μΌλ‘ μ€ν¬λ¦° 리λμ μ κ·Όμ± ν μ€νΈ λκ΅¬λ‘ μΉμ¬μ΄νΈλ₯Ό ν μ€νΈνκ³ , μ΅μ μ κ·Όμ± κ°μ΄λλΌμΈκ³Ό λͺ¨λ² μ¬λ‘μ λν μ 보λ₯Ό μ μ§νμΈμ. μ κ·Όμ±μ μ°μ μμλ‘ μΌμμΌλ‘μ¨ λͺ¨λλ₯Ό μν λ λμ μΉμ λ§λ€ μ μμ΅λλ€.
μΆκ° μλ£:
- WebAIM: https://webaim.org/
- W3C μΉ μ κ·Όμ± μ΄λμ ν°λΈ (WAI): https://www.w3.org/WAI/
- Deque University: https://dequeuniversity.com/